In software systems, Service-Oriented Architecture (SOA) is a set of principles and methodologies for designing software in the form of interoperable services. Services are generally designed as discrete software components that may be reused for different purposes, and among different applications. Many times, these components may perform distinct services that are made available over a communication network to other systems, software applications, and the like. These services and consumers of the services communicate with each other in a well-defined shared format. SOA is used typically in web-based applications, where different services may be provided using standard interfaces that may be accessed by multiple applications. XML (Extensible Markup Language) and JSON (JavaScript Object Notation) standard protocols are typically used for interfacing with SOA services, although different interface types may be used (e.g., Java Remote Method Invocation (Java RMI) that permits remote object function calls, JBoss application server that provides service-oriented portals, etc.).